/**
 * 
 */
package net.sf.jOpinionPoll.controller.cliente;

import java.util.Comparator;

import net.sf.jOpinionPoll.entity.Cliente;

/**
 * @author ericogr
 *
 */
public class ClienteComparator implements Comparator<Cliente> {
	public static enum Campo {NOME, SOBRENOME, CPFCNPJ, CIDADE}
	
	private Campo m_Campo;
	
	public ClienteComparator(Campo campo) {
		m_Campo = campo;
	}

	/* (non-Javadoc)
	 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
	 */
	@Override
	public int compare(Cliente c1, Cliente c2) {
		String s1, s2;
		
		switch(m_Campo) {
			case NOME:
				s1 = (c1 != null ? c1.getNome() != null ? c1.getNome() : "" : "");
				s2 = (c2 != null ? c2.getNome() != null ? c2.getNome() : "" : "");
				
				return s1.compareToIgnoreCase(s2);
				
			case SOBRENOME:
				s1 = (c1 != null ? c1.getSobrenome() != null ? c1.getSobrenome() : "" : "");
				s2 = (c2 != null ? c2.getSobrenome() != null ? c2.getSobrenome() : "" : "");
				
				return s1.compareToIgnoreCase(s2);
				
			case CPFCNPJ:
				s1 = (c1 != null ? c1.getCpfcnpj() != null ? c1.getCpfcnpj() : "" : "");
				s2 = (c2 != null ? c2.getCpfcnpj() != null ? c2.getCpfcnpj() : "" : "");
				
				return s1.compareToIgnoreCase(s2);
				
			case CIDADE:
				s1 = (c1 != null ? c1.getEndereco().getCidade() != null ? c1.getEndereco().getCidade() : "" : "");
				s2 = (c2 != null ? c2.getEndereco().getCidade() != null ? c2.getEndereco().getCidade() : "" : "");
				
				return s1.compareToIgnoreCase(s2);
				
			default:
				s1 = (c1 != null ? c1.getNome() != null ? c1.getNome() : "" : "");
				s2 = (c2 != null ? c2.getNome() != null ? c2.getNome() : "" : "");
			
				return s1.compareToIgnoreCase(s2);
		}
	}
}